// N1Exception.cpp: implementation of the N1Exception class.
//
//////////////////////////////////////////////////////////////////////

#include "N1Exception.h"
#include "N1Log.h"
#include "N1Debug.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

N1Exception::N1Exception() : m_str(NULL) 
{
    N1Crash();
}

N1Exception::N1Exception(N1AnsiString *msg) : m_str(msg)
{
    N1Crash();
    N1Log(N1Log_Error, "Exception generated: %s", m_str->str());
}

N1Exception::~N1Exception() 
{
    if(m_str)
    {
        m_str->release();
    }
}

void N1Exception::Throw(const char* Format, ...) 
{
   N1Crash();

   va_list marker;
   va_start( marker, Format);
   N1AnsiString *str = new N1AnsiString();
   str->formatv(Format, marker);
   throw N1Exception(str);
   va_end( marker );
}

N1AnsiString* N1Exception::getMessage() 
{
    return m_str; 
}
